문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 프로세스 스케줄링 (문단 편집) === FCFS 스케줄링 (First Come First Serve Scheduling) === FCFS 스케줄링은 '''CPU를 먼저 요청한 프로세스가 먼저 CPU를 배정받는''' 스케줄링 방법이다.--아마 가장 간단한 스케줄링 알고리즘일 것이다.-- FCFS 스케줄링은 '''비선점 스케줄링''' 방식이다. FCFS 스케줄링은 [[큐(자료구조)|큐(Queue)]]를 이용하면 쉽게 구현할 수 있다. 다음과 같은 CPU 한차례 사용시간(CPU burst time)을 갖는 프로세스 P,,1,,, P,,2,,, P,,3,,가 P,,1,,, P,,2,,, P,,3,,의 순서로 들어왔다고 하자. ||<:>프로세스||<:>CPU 한차례 사용시간[ms]|| ||<:>P,,1,,||<:>24|| ||<:>P,,2,,||<:>3|| ||<:>P,,3,,||<:>3|| 이때 CPU 스케줄링의 결과는 다음과 같이 표현된다. [[파일:fcfs.png | width=100%]] FCFS 스케줄링은 구현은 간단하지만 효율적이진 않다. 위의 예에서 프로세스들의 평균 대기 시간(average waiting time)을 계산해보자. *P,,1,, : 실행되기까지 0ms 걸렸다. → 대기시간 = 0 [ms] *P,,2,, : 실행되기까지 24ms 걸렸다. → 대기시간 = 24 [ms] *P,,3,, : 실행되기까지 27ms 걸렸다. → 대기시간 = 27 [ms] ∴ 평균 대기 시간 = (0 + 24 + 27) / 3 = 17 [ms] 하지만 만약 P,,2,,, P,,3,,, P,,1,,의 순서로 프로세스들이 실행된다고 해보자. [[파일:fcfs2.png | width=100%]] *P,,1,, : 실행되기까지 6ms 걸렸다. → 대기시간 = 6 [ms] *P,,2,, : 실행되기까지 0ms 걸렸다. → 대기시간 = 0 [ms] *P,,3,, : 실행되기까지 3ms 걸렸다. → 대기시간 = 3 [ms] ∴ 평균 대기 시간 = (6 + 0 + 3) / 3 = 3 [ms] FCFS 스케줄링은 프로세스가 들어오는 순서에 따라서만 결과가 바뀌기 때문에 --운에 맡기는-- --무책임한-- 효율적이지 못한 알고리즘이다. P,,1,,, P,,2,,, P,,3,,의 순으로 프로세스가 들어왔을때의 상황에서 P,,2,,, P,,3,,은 P,,1,,이라는 커다란 프로세스가 끝날때까지 계속 기다려야 한다. 이런 식으로 다른 모든 프로세스들이 커다란 한 프로세스가 끝날때까지 계속 기다리는 현상을 convoy effect라 한다. convoy effect는 CPU와 장치들의 사용률을 낮추기 때문에 되도록이면 지양해야 한다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기